package com.locatme.fragment;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.locatme.model.Enseigne;
import com.locatme.model.Message;
import com.locatme.model.Personne;
import com.locatme.model.Utilisateur;
import com.locatme.modelBD.MessageBD;
import com.locatme.modelBD.UtilisateurBD;
import com.main.locatme.R;

public class SendMessageFragment extends Fragment {

    private TextView txtemetteur;
    private EditText editdestin;
    private EditText editdobjet;
    private EditText editmessage;
    private MessageBD messageBD;
    private Message msg;


    public TextView getTxtemetteur() {
        return txtemetteur;
    }

    public void setTxtemetteur(TextView txtemetteur) {
        this.txtemetteur = txtemetteur;
    }

    public EditText getEditdestin() {
        return editdestin;
    }

    public void setEditdestin(EditText editdestin) {
        this.editdestin = editdestin;
    }

    public EditText getEditdobjet() {
        return editdobjet;
    }

    public void setEditdobjet(EditText editdobjet) {
        this.editdobjet = editdobjet;
    }

    public EditText getEditmessage() {
        return editmessage;
    }

    public void setEditmessage(EditText editmessage) {
        this.editmessage = editmessage;
    }

    public SendMessageFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_send_message,
                container, false);

        final Button submitMessageButton = (Button) rootView
                .findViewById(R.id.submitMessageButton);

        // On lie les bouton aux variables
        txtemetteur = (TextView) rootView.findViewById(R.id.txtemetteur);
        editdestin = (EditText) rootView.findViewById(R.id.editdestin);
        editdobjet = (EditText) rootView.findViewById(R.id.editobjetm);
        editmessage = (EditText) rootView.findViewById(R.id.editmessage);

        // Rcuperation de l'utilisateur pass en parametre de MainActivity
        Utilisateur user = (Utilisateur) getActivity().getIntent().getExtras()
                .getParcelable("user");
        // Si l'utilisateur est une personne
        if (Personne.class.isAssignableFrom(user.getClass())) {
            Personne personne = getActivity().getIntent().getExtras()
                    .getParcelable("user");
            txtemetteur.setText(personne.getLogin());
            // Sinon c'est une nseigne
        } else {
            Enseigne enseigne = getActivity().getIntent().getExtras()
                    .getParcelable("user");
            txtemetteur.setText(enseigne.getLogin());
        }
        submitMessageButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                insererMessage(v);
            }

        });

        return rootView;
    }

    /**
     * insererMessage : Methode qui verifie les donnes des champs et fait appel
     *  la methode d'insertion de MessageBD
     *
     * @param v
     *            : View
     */
    public void insererMessage(View v) {

        // cration et affectation de l'objet message
        messageBD = new MessageBD(this.getActivity());
        msg = new Message(editdobjet.getText().toString(), getDate(),
                editmessage.getText().toString(), editdestin.getText()
                .toString(), txtemetteur.getText().toString());

        // Cration de l'objet utilisateurBD
        UtilisateurBD userBD = new UtilisateurBD(getActivity());
        userBD.open();

        // Verification de l'existance du login destinataire
        if (userBD.getPersonneByLogin(editdestin.getText().toString()) != null) {
            // Si le texte est vide
            if (editmessage.getText().toString().equals("")) {
                Toast.makeText(getActivity(),
                        "you can't send an empty message", Toast.LENGTH_SHORT)
                        .show();
                // Si le texte n'est pas vide
            } else {
                messageBD.open();
                // si l'insertion s'est bien pass
                if (messageBD.insertMessage(msg) == -1) {
                    Toast.makeText(getActivity(), "Insert problem",
                            Toast.LENGTH_SHORT).show();
                    // Confirmation de l'envoie de message
                } else {
                    Toast.makeText(getActivity(), "Message sent",
                            Toast.LENGTH_SHORT).show();
                    editdobjet.setText("");
                    editmessage.setText("");
                }
                messageBD.close();
            }
        } else {
            Toast.makeText(getActivity(), "User not found", Toast.LENGTH_SHORT)
                    .show();
        }
    }

    /**
     * getDate : Retourne un format de la date actuelle
     *
     * @return String de la date  un certain format
     */
    public String getDate() {
        Locale locale = Locale.getDefault();
        Date currentDate = new Date();

        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "dd-MM-yyyy HH:mm:ss", locale);
        String date = dateFormat.format(currentDate);

        return date;

    }
}
